約 2,448,743 件
https://w.atwiki.jp/amaeda/pages/52.html
FFTWマニュアル - FFTWリファレンス - データタイプとファイル - 精度 精度 Precision 単精度、4倍精度(long-double)バージョンのFFTWをインストールすることもできます。これはそれぞれ、通常のdouble型の所を、floatとlong doubleにそれぞれ置き換えるものです。(詳細は8章のインストールとカスタマイズ)をご覧ください。これらのインターフェースを使うには、以下のようにすればよい。 単精度/4倍精度のライブラリにリンクする。Unixでは、-lfftw3fや-lfftw3lを-lfftw3の代わりにつければよい。(同時に違う精度のライブラリにリンクすることもできる) 同じヘッダ fftw3.h をインクルードする すべての小文字の fftw_ インスタンスを fftwf_ や fftwl_ にそれぞれ置き換える(前者が単精度、後者が4倍精度)。たとえば、fftw_complexはfftwf_complex、fftw_executeはfftwf_executeといった具合である。 大文字の名前(たとえばFFTW_で始まるもの)は、同じ名前のままにする サブルーチンのパラメータを、doubleをfloatやlong doubleにする ご利用のコンパイラやハードウェアによって、long doubleはdoubleより精度がよくない場合があります(もしくは、全くサポートされてないかもしれません。C99では標準となっています。)
https://w.atwiki.jp/amaeda/pages/2.html
メニュー FFTWマニュアルFFTWとは?? FFTWの使い方複素1次元離散フーリエ変換 複素多次元離散フーリエ変換 実データ1次元離散フーリエ変換 実データ多次元離散フーリエ変換 その他重要なことデータの並び 多次元配列のフォーマット 知の利用-プランの保存 知の利用上の注意 FFTWリファレンス データタイプとファイル プランの利用 ベーシックインターフェース FFTW使用上の注意 サンプルプログラム 掲示板/メッセージ リンク @wiki @wikiご利用ガイド 取得中です。 ここを編集
https://w.atwiki.jp/amaeda/pages/44.html
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット - C言語における固定配列 C言語における固定配列 Fixed-size Arrays in C C言語でコンパイル時にサイズが宣言されている多次元配列は、すでに列メジャーオーダーになっています。したがって、何も特別なことをする必要はありません。以下に例を示します、 { fftw_complex data[NX][NY][NZ]; fftw_plan plan; ・・・ plan = fftw_plan_dft_3d( NX, NY, NZ, data[0][0][0], FFTW_FORWARD, FFTW_ESTIMATE ); ・・・ } これは、NXxNyxNzの入出力が同じである、インプレース変換のプランです。プランナーにわたす引数を、ゼロ番目の要素のアドレスを取得している方法に注意してください(型変換も使いました)。 しかし、ユーザーはこのように配列を宣言することで、以下の二つの理由でがっかりさせてしまうでしょう。 第1に、配列はスタックに確保されます(”自動”格納)。これはほとんどのOSで大きさが非常に制限されてしまいます(数千を超える要素を持つ配列を宣言すると、クラッシュすることもしばしばです)。(これらの制限は、配列をstaticかglobal宣言をすることで、多くのOSで避けることができますが、それには新たな問題が付随します) 第2に、FFTWのSIMDに適したメモリ配置になるとはかぎらないことです。これらの代わりに、fftw_mallocを次に示すような方法で使うことを推奨します。
https://w.atwiki.jp/amaeda/pages/13.html
- 番目のお客様♪ (※) プログラムを実行していかなる結果が生じても責任は負いません。悪しからず。 プログラムおよび実行結果 fftw+C言語標準ライブラリのみで動くプログラム とりあえず、試してみたい方へ。 プログラムの内容 ソースコード 実行結果 基本の使い方 1次元FFT fftw1D.cpp result1 基本の使い方 2次元FFT fftw2D.cpp result2 原点移動(2次元) DCexchange.cpp result3 パワースペクトルを得る powerspectol.cpp result4 位相を得る phase.cpp 画像出力する プランの再利用 メモリを節約したFFT OpenCVを利用したプログラム OpenCVというライブラリが必要だが、ライブラリ導入によって、コードも簡単、入出力も簡単になりオススメである。 プログラムの内容 ソースコード 実行結果 基本のひな形 fftwandopencv.cpp メモリを節約したFFT realdataDFT.cpp result101 ダウンロード program download ※ プログラム作成ポリシー -速度は優先しない(可読性重視) -エラーハンドリングは適度にまじめに (メモリ開放を通らないルーチンあり) 間違えやアドバイスなどありましたら、BBSにご一報ください。
https://w.atwiki.jp/amaeda/pages/43.html
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット - 列メジャー形式 列メジャー形式 Column-major Format フォートランを利用している読者は、列メジャー順(時にフォートラン順)の配列に馴染みがあります。これは、「最初の」添え字が一番はやく変わるという点で、行メジャー順とは本質的に正反対です。 列メジャー順の配列をFFTWで変換したい場合は、非常に簡単にできます。プランを作るときに、プランナーに引数として渡す次元の配列を、逆順に渡せばよいだけです。例えば、ランク3のNxMxLの行メジャー形式の行列を変換したい場合は、LxMxNの行列であるかのような引数を渡せばよいことになります(これは、FFTWの観点から、この行列はLxMxNということです)。これは、FFTWのフォートランインターフェースを使えば自動的に実行されます。
https://w.atwiki.jp/amaeda/pages/40.html
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット 多次元配列のフォーマット Multi-dimensional Array Format この章では、FFTWにおける多次元配列のフォーマットについて述べます。 このトピックについては、詳細な議論が必要だと思っています。異なるフォーマットが通常用いられたりすることもあるので、このトピックはしばしばユーザーの混乱のもととなります。 行メジャー形式 列メジャー形式 C言語の固定サイズ配列 C言語の動的配列 C言語の動的配列(間違えた使い方)
https://w.atwiki.jp/amaeda/pages/30.html
その他重要なこと Other Important Topics データの並びSIMDの並びとfftw_malloc x86アーキテクチャにおけるスタックの並び 多次元配列のフォーマット列メジャー形式 行メジャー形式 C言語における固定配列 C言語における動的配列 C言語における動的配列-誤った方法 知の利用 -プランの保存 知の利用上の注意 Wisdom利用上の注意
https://w.atwiki.jp/amaeda/pages/38.html
x86アーキテクチャにおけるスタックの並び Pentiumやそれに続くx86のプロセッサーでは、倍精度の変数が8-byte並びになっていないと、かなりのパフォーマンスの損失があります。(2つ以上の因数というのは普通ではありません?? 原文 a factor of two or more is not unusual) 残念なことに、スタック(ローカル変数や、サブルーチンの引数が格納される場所)はIntel ABIでは8-byte並びになっていることは保証されていません。 最近のgcc(Intel、Metrowerks、Microsoftなどの大多数のその他のコンパイラも同様)では、スタックを8-byte並びにすることができ、gccはこれをデフォルトでやってくれます(gccドキュメントの-mpreferred-stack-boundaryを参照)。もし、あなたのコンパイラがデフォルトでスタック並びを保証してくれるかどうか、定かでなければ確認するのがよいでしょう。 残念なことに、gccはスタック並びを保つだけなので、結果としてスタックの始めの場所が、ちょうど良くないと、その後のデータはずっとちょうど良くない場所にあり続けるわけで、悲惨なほど性能が低下します(倍精度の場合)。これを防ぐためには、FFTWは並びを良くするために、必要であればスタックに刻みをもうけ、並びがきちんとしていないスタックをプログラムから読んでしまってもうまく動くようにしています。現在のところ、この刻みはgccとIntel Cコンパイラのみをサポートしています。その他のコンパイラをご利用の場合は、自分で解決してください。 最近のgligc(GNU/Linux)は、スタックの始まりの適切に並べる機能を提供していていますが、古いバージョンや、他のOSについてはよく知りません。この問題が、時がたつにつれ、大した問題ではなくなることを望みます。
https://w.atwiki.jp/geogebra_kyozai/pages/19.html
有理数,実数 実数の分類(生徒用ワークシート) 絶対値 絶対値(geogebraTube) 作り方 根号を含む計算 根号を含む計算 (生徒用ワークシート) 有理化 有理化 (生徒用ワークシート) 有理化2 (生徒用ワークシート) 2重根号
https://w.atwiki.jp/aniwotawiki/pages/11249.html
登録日:2010/09/05(日) 15 45 19 更新日:2024/07/22 Mon 08 11 54 所要時間:約 4 分で読めます ▽タグ一覧 ためになる項目 ためになる項目←理解できれば なるほど、わからん 名前がかっこいい 数学 数概念 数直線 無限 超実数 超準解析 雑学項目 頭の体操項目 『数』とは、人間が持っている様々な概念の中で最も、と言うかほぼ唯一、むら無く交換共有出来る重要な概念である。 自然数によって順番を表したり、実数によって大小関係を比較したりするのは全く自然な操作である。 さて、我々は現在日常的には『実数体R』と言う数の集合及びその部分集合である『有理数体Q』、『整数環Z』などを用いているが、 そもそも実数とはどのような体系なのだろうか。 人々はまず『自然数』を見つけた。 これはつまり、『ひとつ』『ふたつ』と数えられる数であり、その名の通り世に遍く自然な数である。 (現代数学においては自然数に0を含める流儀もあるが、ここでは0は含めないものを意味する) 自然数全体の集合N上では、小学校以来おなじみの足し算と掛け算ができる。 しかし、この足し算と掛け算には不十分な点が存在する。それが単位元と逆元の存在であった。 まず単位元について考えよう。まず、どんな自然数nに対してもn×1=nとなることが知られている。(実はこれは1の定義でもある) このように、どんなものに掛けても結果が変わらないものを乗法単位元と呼ぶ。すなわち、Nは乗法単位元1を持っている。 一方で、Nは加法単位元を持たない。すなわち、どんな自然数nに対してもn+x=nとなるような自然数xは存在しない。 これでは不便なので、我々は新たに0という数をNに加えた。 次に逆元について考えよう。我々は自然数について既に足し算と掛け算という演算を知っているが、これらの演算には自然に逆演算を考えられる場合がある。 例えば、足し算の場合には2+5=7だから7-5=2、掛け算の場合には2×3=6だから6÷2=3といった具合である。 この「-」や「÷」は日常的には引き算、割り算と呼ばれる演算である。 ところが、自然数だけではこれらの演算が行えない場合がある。 例えば、2-5とか7÷3という演算は自然数と0の範囲では定義出来ない。 そこで、我々は引き算が常に行えるように負の整数というものを新たに考えることにした。 こうして我々は自然数(正の整数)、0、負の整数からなる『整数環Z』を得た。Z上では足し算、引き算、掛け算の操作が自由にできる。 先程、自然数と0の範囲では計算できなかった2-5も、Z上では2-5=-3と計算できるのである。 しかし、まだ割り算の問題が残っている。これを解決するために、我々はさらに分数というものを考えることにした。 Zに分数を追加することで、我々は『有理数体Q』を得た。 これによって、我々は0で割ることを除けば自由に『+』、『-』、『×』、『÷』の四則演算を行うことができるようになったのである。 したがって、四則演算を考える限りは有理数体Qで十分である。 ところで、初等的には、掛け算とは2×3=2+2+2のように足し算をくり返すものだった。 そこで、さらに掛け算をくり返す演算を考えてみよう。それが累乗と呼ばれる演算で、例えば3^2=3×3といった具合である。(a^bはaのb乗の意味) 足し算に対しては引き算、掛け算に対しては割り算という逆演算を考えてきたのと同様に、累乗に対しても逆演算を考えてみる。 先程の例では、3^2=3×3=9だから、2乗するという演算の逆演算を9に行うと3になると考えることができる。 (-3)^2=(-3)×(-3)=9という式が成り立つので、2乗するという演算の逆演算を9に行った結果として-3を考えることもできるが、 「演算」といった場合、結果は1つに決まらなければならないので、ここでは0以上のもの(すなわち3)を演算結果として採用しよう。 このように、2乗するとある有理数xになるような0以上の数を与える演算を『2乗(平方)根をとる』ということにし、 その演算結果をxの2乗(平方)根とか√xなどと書くことにする。(同様にして、正の整数nに対しn乗根を考えることができる) 残念なことに、この平方根をとる演算は有理数体Q上では自由に行うことはできない。例えば、2乗すると2になる有理数xは存在しないのである。 そこで、先程NからZをつくり、さらにZからQを構成したのと全く同様に、『n乗根をとる』演算が自由にできるような集合Aを考える。 Aは高校数学までには登場しないが、代数的数体と呼ばれる数の集合である。 こうして我々は『代数的数体A』を得た。A上では、我々は四則演算に加え、更に『n乗根をとる』演算が自由にできる。 ただし、Aを定義するにあたって、例えば√(-1)はどうするのか、という問題がある。これは『複素数体C』へとつながる重要な問題であるが、 いまは実数体への拡張を考えているので複素数の問題には立ち入らないことにする。 すなわち、数学一般における通常の定義でははAに複素数を含むが、ここでは含まないものとする。 さて、次に、Aははたして我々が(理解しているかどうかはともかく)知っている『実数体R』と等しいか?という問題を考えよう。 明らかにA⊂Rなので、R⊂Aかどうか、すなわち実数は全て代数的数か?というのがこの問題の本質的な部分である。 結論から言うと、A≠Rであることが知られている。つまり、実数であって代数的数ではない数が存在することが分かっている。 そのような数を超越数と呼ぶ。例えば、小学校で習う円周率πや高校で習うネイピア数eは超越数の例である。 (超越性の判定は一般に困難であり、例えばπ+eが超越数かどうかは未解決問題である) したがって、実数体を得るためにはさらなる考察が必要となる。 さて、先程2乗すると2になる有理数は存在しないことを述べた。(すなわち、√2は有理数ではない) その一方で、2乗すると2に近い値になるような有理数は存在するのである。 例えば、3/2, 7/5はそれぞれ2乗すると9/4=2+1/4, 49/25=2-1/25であり、それぞれ2との差は1/4,1/25である。 では、この差はどの程度まで小さくすることができるだろうか?というのが問題となるが、実はこの差はいくらでも小さくできる。 (差がいくらでも小さくできることと差が0であることは異なることに注意せよ) たとえば、2乗すると2との差が1兆分の1以下になるような有理数が存在するのである。 これが意味するのは、2乗すると2になる数は有理数ではあり得ないが、有理数によって任意の精度で近似できるということである。 もう一つの例として、円周率πについて考えよう。先程πは代数的数ではないことを述べた。 一方で、円周率とは初等的には直径1の円の周の長さであり、感覚的な理解が可能である。 (我々は曲線の長さをどう定義するかという問題には立ち入らず、円周に「長さ」があることを認めることにする) そこで、この円に内接する正6角形を考えると、その周の長さはちょうど3であり、πは3に近い数であると思われる。 更に、正12角形,正24角形,…と次々に辺の数を2倍にしていくとその周の長さは帰納的に三平方の定理によって求めることができ、それらは代数的数であることが分かる。 また、円に内接する正多角形の辺の数は増やせば増やすほどその多角形は限りなく円に近付く。 したがって、先程の√2のときと同様に、πは代数的数ではないにも関わらず、代数的数によって任意の精度で近似できる。 以上の2つの例から、実数(だと我々が少なくとも思っている)数はA(あるいはQ)の数によって任意精度で近似できるようなものであることが推定される。 そこで、これを実数の定義として採用してしまおう。 すなわち、Aによって任意精度で近似できるような数を新たにAに追加し、それを実数体Rとするのである。 なお、xがもともとAの数ならxはx自身によって誤差0で近似できる。したがって、RとはAによって任意精度で近似できるような数全体といってよい。 こうして我々はついに日常的に使っている実数を得た。 (ただし、この実数体の定義は厳密には正しくない。本来はA(実際にはQで十分)に「完備化」という操作を行う必要がある) さて、我々はAによって任意精度で近似できるような数全体を実数体とする定義にたどり着いた。 ところで、誰でも知っているように、実数体R、特に代数的数体Aでは大小比較ができる。 すなわち、xとyをそれぞれ代数的数とすると、x<y, x=y, x>yのどれかただ1つが必ず成り立つ。 また、どんな代数的数xに対しても、x<yとなる代数的数yが存在する。 したがって、「限りなく大きくなる」代数的数の列というものを考えることができる。 例えば、{1,2,3,4,…}とか{2,4,6,8…}はそのような列の例である。 この「限りなく大きくなる」代数的数の列を、拡大解釈して「∞に限りなく近づく」代数的数の列だと思ってみよう。 すると、∞はAによって任意精度で近似できると考えることができる。(-∞についても同様) こうして、実数体Rには、さらに∞および-∞を追加することができる。こうして得られた集合を拡大実数とか補完数直線などと呼ぶ。 …ここからが本題の超実数の話。先程、我々は実数体Rに∞と-∞を追加した集合である拡大実数を得た。 注意深い読者なら気付いただろうが、この集合は拡大実数「体」ではない。つまり、これは体ではない。 我々はまず自然数全体の集合Nから始め、Nが元々持っていた構造(足し算や掛け算、大小関係)を壊さないように慎重に拡張してきたのだが、 Rに∞と-∞を追加したことでその構造が壊れてしまったのである。 拡大実数を構成する際、 「限りなく大きくなる」代数的数の列は「∞に限りなく近づく」代数的数の列 だという拡大解釈を行ったが、これが失敗だった。 「限りなく大きくなる」代数的数の列として挙げた{1,2,3,4,…}と{2,4,6,8…}は確かに両方とも「限りなく大きくなる」代数的数の列であることは間違いない。 しかし{1,2,3,4…}という列に比べ{2,4,6,8…}という列は2倍の勢いで大きくなっていく。 この事実を無視し、単純に両方を∞という同じ数に近づく列だと考えてしまったのが原因でおかしなことになってしまったのである。 この問題を解消するには、「異なる勢いで大きくなる列」には「異なる∞」を対応させればよい。 この方法を用いれば、Rの体構造を保ったまま∞と-∞を追加することができる。これを超実数「体」と呼ぶ。 こうして我々は記事名にもある超実数を構成できた。 (列が大きくなる「勢い」をどう比較するのか、という非常に重要な問題が解決していないが、これは専門書に譲る) こうして得た超実数体は、超準解析と呼ばれる分野に使われている。 ただ、超準解析は英語では「Nonstandard analysis」(標準的ではない解析学)と呼ばれていることからも察しがつくが、あまりメジャーな分野ではない。 ちなみに、超実数体は歴史的には 感覚的取扱いが困難な「ε-δ論法」による極限を感覚的に取り扱えるようにする! ということが発端となり発案されたものであるが、ここまで読んだ人ならお分かりのように、 正直言って超実数体も感覚的に取り扱えるようになるためにはかなりの慣れが必要である。 追記・修正を求める。 △メニュー 項目変更 この項目が面白かったなら……\ポチッと/ -アニヲタWiki- ▷ コメント欄 [部分編集] 間違いかなり多いぞ。 -- 名無しさん (2014-04-29 14 14 31) んじゃ修正しろよな -- 名無しさん (2014-06-05 15 44 13) Rの元との距離が無限小に抑えられたら同じとみなすとか、代数的構造くらいには触れてほしい -- 名無しさん (2015-05-05 23 30 20) 細かい枝葉より本質のニュアンスが伝わりゃ十分 -- 名無しさん (2015-05-05 23 50 42) うおおお、思考回路が、思考回路があああああ(@_@ -- 名無しさん (2015-07-17 09 35 13) なるほど、わからん -- 名無しさん (2015-07-17 09 40 25) 大幅に修正。 -- 名無しさん (2017-01-14 19 37 31) なるほどわからん(@_@; -- 名無しさん (2020-01-15 15 51 45) 分かる分からない以前にただ読みにくいからなんとかしてくれ -- 名無しさん (2020-12-07 23 31 32) これ適当にそれっぽい言葉ならべてるだけじゃないの? -- 名無しさん (2020-12-08 00 35 59) ↑ちゃんと詠んだ上で文句いってんのか?見た限り特に間違いないぞ、そもそも超実数は大学数学超える難易度だし、それをニュアンスだけとはいえこれだけ簡単で読みやすく書けてるなら文句ないわ -- 名無しさん (2020-12-08 23 31 23) ニュアンスはなんとなく伝わるんだが、超実数の説明に至るまで長いからひたすらに分かりにくい。ぶっちゃけここのwiki見に来る層的に「超実数」なんて初めて聞く人が大半だろうから、まず「超実数とはなんぞや?」と言うのを簡潔に書いてから「なんで超実数なんてものが生まれたのか?」に繋げた方が良いんじゃないかな?(超実数なんて初めて聞いたから俺には書けんが) -- 名無しさん (2020-12-09 19 37 09) 代数的数体とか有理数体という言葉と縁遠いから分かりづらいと感じるのかもしれん -- 名無しさん (2023-01-16 21 23 06) 名前 コメント